// 此vm参数为页面的实例，可以通过它引用vuex中的变量

module.exports = (vm) => {
	// 初始化请求配置
	uni.$u.http.setConfig((config) => {
		config.baseURL = "https://my.wthoo.com";
		return config
	})
	// 请求拦截
	uni.$u.http.interceptors.request.use((config) => {
		config.data = config.data || {}
		const userInfoToken = uni.getStorageSync("user_info_token");
		const userInfo = uni.getStorageSync("user_info");
		if (userInfoToken&&userInfo) {
			config.header.token = userInfoToken;
			config.header.id = userInfo.id;
		}

		// config.header.traceId = uuid();
		console.log("请求参数配置----->" + JSON.stringify(config))
		return config
	})

	const uuid = function(len, binary) {
		len = !len ? 36 : len;
		binary = !binary ? 16 : binary;
		return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
			var r = Math.random() * binary | 0,
				v = c == 'x' ? r : (r & 0x3 | 0x8);
			return v.toString(binary);
		}).substring(0, len)
	};

	// 响应拦截
	uni.$u.http.interceptors.response.use((response) => {
		const data = response.data
		console.log("请求回调成功----->" + JSON.stringify(data))
		// 自定义参数
		if (data.code == 1) {
			return data.data
		} else if (data.code == 401) {
			uni.reLaunch({
				url: '/pages/login/PhoneLogin'
			})
		} else {
			return Promise.reject(data)
		}

	}, (response) => {
		const data = response.data
		console.log("请求回调失败----->" + JSON.stringify(data))
		// 对响应错误做点什么 （statusCode !== 200）
		// uni.showToast({
		// 	title: '请求失败',
		// 	icon: "none"
		// });

		return Promise.reject(data)
	})
}
